package edu.cmu.cs.erl;

import java.util.Hashtable;
import java.util.List;
import java.util.Map;

import jp.ac.kobe_u.cs.prolog.lang.Term;
import jp.ac.kobe_u.cs.prolog.lang.VariableTerm;

public interface Oracle {
	public boolean evaluate(Hashtable<String, Object> context, Object atomicPredicate);
	
	public String getMessage(Hashtable<String, Object> context, Object atomicTerm);

	public String getNotMessage(Hashtable<String, Object> context, Object atomicTerm);
	public String getIsMessage(Hashtable<String, Object> context, Object atomicTerm);
	public String getIsNotMessage(Hashtable<String, Object> context, Object atomicTerm);

	public List<Object> getObjects(Hashtable<String, Object> context, Object groundedTerm);
	
	public VariableTerm getVariable(String str);
	
	public Hashtable<String, Object> getStartingContext();

}
